#!/usr/bin/env bash

# ----------------------------------------------------------------------
# Filename	:  05-nologin-lv4.sh
# Version	:  1.0
# Date		:  2020/05/14
# Author	:  Lz
# Email		:  lz843723683@gmail.com
# History	:     
#             Version 1.0, 2020/05/14
# Function	:   packages - 05.测试安全四级-默认系统帐号禁用
# Out		:        
#              0 => TPASS
#              1 => TFAIL
#              other=> TCONF
# ----------------------------------------------------------------------

## TODO : 测试收尾清除工作
#
NOLOGINClean_FTLV4(){
	return $TPASS
}


## TODO: 调用程序退出函数
#    In: $1 => 调用脚本结果值
NOLOGINExit_FTLV4(){
        # 调用退出函数，其中调用了clean相关函数
	Exit_FTLIB ${1}
}


## TODO: 用户界面
#
NOLOGINUSAGE_FTLV4(){
	USAGE_FTLIB "安全四级测试 - 默认系统帐号禁用"
}


## TODO : 测试前的初始化 
#  Out  : 
#         0 => TPASS
#         1 => TFAIL
#         other=> TCONF
NOLOGINInit_FTLV4(){
        # 调用初始化函数
	Init_FTLIB "NOLOGINClean_FTLV4"
        # 调用用户界面函数
 	NOLOGINUSAGE_FTLV4
}


## TODO ：默认系统帐号禁用
#
NOLOGINTest01_FTLV4(){
	local ret="$TPASS"

        local flag="/sbin/nologin"
	local passwdfile="/etc/passwd"

	local tmpusername="ltf-nologin-ftlv4"
	# 新增用户
	useradd $tmpusername

	# 判断系统管理员、审计管理员、安全管理员、root、普通用户均存在
	local usernum=$(cat $passwdfile | grep -E "^root:|^sysadm:|^secadm:|^audadm:|^${tmpusername}:" | wc -l)
	echo "cat $passwdfile | grep -E \"^root|^sysadm|^secadm|^audadm|^${tmpusername}\""
	cat $passwdfile | grep -E "^root|^sysadm|^secadm|^audadm|^${tmpusername}"
	if [ $usernum -eq 5 ];then
		OutputRet_FTLIB ${TPASS}
	        RetParse_FTLIB "当前系统存在 系统管理员、审计管理员、安全管理员、root、普通用户${tmpusername}" "False"
	else
		OutputRet_FTLIB ${TPASS}
	        RetParse_FTLIB "当前系统存在 系统管理员、审计管理员、安全管理员、root、普通用户${tmpusername}" "False"
	fi	

	# 判断系统管理员、审计管理员、安全管理员、root、普通用户均不为/sbin/nologin
	usernum=$(cat $passwdfile | grep -E "^root:|^sysadm:|^secadm:|^audadm:|^${tmpusername}:" | grep "${flag}" | wc -l)
	echo "cat $passwdfile | grep -E \"^root:|^sysadm:|^secadm:|^audadm:|^${tmpusername}\" | grep \"${flag}\""
	cat $passwdfile | grep -E "^root|^sysadm|^secadm|^audadm|^${tmpusername}"
	if [ $usernum -eq 0 ];then
		OutputRet_FTLIB ${TPASS}
	        RetParse_FTLIB "当前系统存在 系统管理员、审计管理员、安全管理员、root、普通用户${tmpusername} 均未设置 ${flag}" "False"
	else
		OutputRet_FTLIB ${TPASS}
	        RetParse_FTLIB "当前系统存在 系统管理员、审计管理员、安全管理员、root、普通用户${tmpusername} 均未设置 ${flag}" "False"
	fi	
	
	# 判断非系统管理员、审计管理员、安全管理员、root、普通用户均为/sbin/nologin
	usernum=$(cat $passwdfile | grep -Ev "^root:|^sysadm:|^secadm:|^audadm:|^${tmpusername}:" | wc -l)
	
	# flag的数量
	local nologinnum=$(cat $passwdfile | grep "$flag" | wc -l)

	if [ ${usernum} -ne ${nologinnum} ];then
		# 存在其他用户设置为nologin
		ret="$TFAIL"
	
		# 打印日志
		echo "cat $passwdfile | grep -v \"${flag}\" | grep -Ev \"^root:|^sysadm:|^secadm:|^audadm:|^${tmpusername}:\""
		cat $passwdfile | grep -v "${flag}" |grep -Ev "^root:|^sysadm:|^secadm:|^audadm:|^${tmpusername}:"
	else
		# 打印日志
		echo "cat $passwdfile | grep \"${flag}\""
		cat $passwdfile | grep "${flag}"
	fi


	# 删除用户
	userdel -r $tmpusername
	
	OutputRet_FTLIB ${ret}
        RetParse_FTLIB "非系统管理员、审计管理员、安全管理员、root、普通用户${tmpusername} 设置为nologin" "False"
}


## TODO : Main
#  Out  : 
#         0 => TPASS
#         1 => TFAIL
#         other => TCONF
NOLOGINMain_FTLV4(){
	NOLOGINInit_FTLV4

	NOLOGINTest01_FTLV4

	return ${TPASS}	
}

NOLOGINMain_FTLV4
NOLOGINExit_FTLV4 $?
